home *** CD-ROM | disk | FTP | other *** search
- ;
- ;-------------------------------;
- ; NOTBASIC ;
- ; A MODULE FOR COMAL ;
- ; ;
- ; BY DICK KLINGENS ;
- ; ;
- ; SEP85 ;
- ; ;
- ; DUTCH COMAL USERS GROUP ;
- ;-------------------------------;
- ;
- * =$8009; START MODULE
- ;
- ;--CONSTANTS--------------------;
- ;
- FALSE =0
- TRUE =1
- ;
- DEFPAG =%01000110 ; 52KB ROM MAP
- ;
- DIS =8 ; CHARACTERS
- CR =13
- LOWER =14
- ;
- ;--VARIABLES--------------------;
- ;
- TEMP =$0055 ; TEMPORARY STORAGE
- IND =$00FB ; POINTER FOR PRTEXT
- NOREST =$C841 ; NO RESTORE: TRUE=DISABLED
- ;
- ;--ROUTINES---------------------;
- ;
- CWRT =$CA06 ; WRITE CHARACTER
- SCAN =$FFE4 ; SCAN KEYBOARD
- ;
- ;--SIGNAL TYPES-----------------;
- ;
- DISCRD =3 ; BEFORE DISCARD-COMMAND
- NEW =4 ; AFTER NEW-COMMAND
- BASIC =11 ; BEFORE LEAVING COMAL
- ;
- ;--MODULE DESCRIPTION-----------;
- ;
- .BYTE DEFPAG ; MAP
- .WORD LEND ; END OF MODULE
- .WORD SIGNAL ; SIGNAL ROUTINES
- ;
- .BYTE 0 ; NO PACKAGES
- ;
- SIGNAL CPY #DISCRD ; IF DISCARD THEN
- BEQ INCODE ; GOTO INCODE
- CPY #NEW ; IF NEW THEN
- BEQ INCODE ; GOTO INCODE
- CPY #BASIC ; IF BASIC THEN
- BEQ INCODE ; GOTO INCODE
- RTS ; COMAL
- ;
- INCODE LDA #TRUE
- STA NOREST ; NOREST:=TRUE :DISABLE RESTORE
- LDA #<TEXT ; .A:=LO TEXT
- LDX #>TEXT ; .X:=HI TEXT
- JSR PRTEXT ; EXEC PRTEXT
- JSR READ ; EXEC READ
- LDA #FALSE
- STA NOREST ; NOREST=FALSE :ENABLE RESTORE
- RTS ; COMAL
- ;
- PRTEXT STA IND ; (IND):=.A :SETUP POINTER
- STX IND+1 ; (IND+1):=.X
- LDY #0 ; .Y:=0
- REPEAT LDA (IND),Y ; READ CHAR
- BEQ EOT ; IF END-OF-TEXT THEN GOTO EOT
- JSR CWRT ; EXEC CWRT :PRINT CHAR
- INY ; .Y:+1
- BNE REPEAT
- EOT RTS ; RETURN
- ;
- TEXT .BYTE DIS,LOWER
- .BYTE 'TYPE CODE: '
- .BYTE 0 ; END-OF-TEXT
- ;
- READ LDX #0 ; .X:=0
- WAIT STX TEMP ; (TEMP):=.X
- SWAIT JSR SCAN ; EXEC SCAN :GET CHAR
- BEQ SWAIT ; IF NO-CHAR THEN GOTO SWAIT
- LDX TEMP ; .X:=(TEMP)
- CMP CODE,X ; IF NOT CODE=X THEN
- BNE CDWRNG ; GOTO CDWRNG
- INX ; .X:+1
- CPX #CODEND-CODE ; IF NOT END-OF-CODE THEN
- BNE WAIT ; GOTO WAIT
- LDA #<OK
- LDX #>OK
- JSR PRTEXT ; EXEC PRTEXT :PRINT "OK"
- RTS ; RETURN
- ;
- CDWRNG JSR SCAN ; EXEC SCAN :GET CHAR
- CMP #CR ; IF NOT <CR> THEN
- BNE CDWRNG ; GOTO CDWRNG
- LDA #<WRNG
- LDX #>WRNG
- JSR PRTEXT ; : PRINT "ERROR.."
- LOOP JMP LOOP ; ONLY RESET WILL DO
- ;
- CODE .BYTE 'CML80' ; THIS IS THE CODE
- CODEND
- ;
- OK .BYTE 'OK',CR,0
- WRNG .BYTE 'ERROR IN CODE, RESET',CR,0
- ;
- LEND .END
-